package datastructure.array;


import java.util.Arrays;

/**
 * 数组的使用
 *
 * 注意
 *      1 数组本身是个引用数据类型, 是个对象
 *      2 array1是数组类型的引用变量, 其内部保存的是数组在堆空间中的首地址
 *      3 null在 Java中表示空引用, 也就是一个不指向对象的引用
 *
 *
 */
public class ArrayMain {

    public static void main(String[] args) {
        ArrayMain arrayMain = new ArrayMain();
        arrayMain.createArr();
    }

    /**
     * 创建数组
     *      数组创建分为三步: 声明变量 -> 分配内存空间 -> 赋值 (有些步骤可以合在一起写 )
     *
     * 注意
     *      1 初始化分为静态和动态, 初始化的意思就是给数组分配内存空间
     *        声明一个变量(比如arr1), 这个变量只是一个引用的地址, 指向实际的对象
     *        数组的实际对象是在堆中的, 需要进行内存的分配
     *
     */
    public void createArr() {
        // 数组的静态初始化
        int[] array1 = new int[]{0, 1, 2, 3, 4, 5, 6};
        double[] array2 = {1.0, 2.0, 3.0, 4.0, 5.0};

        // 数组的动态初始化
        // 在创建数组时, 直接指定数组中元素的个数, 此时数组中元素有其默认值, 已经分配了内存空间, 等待赋值
        int[] array3 = new int[3];
        array3[0] = 100;
        array3[2] = 300;
        System.out.println(Arrays.toString(array3));
    }


    /**
     * 获取一个字符串数组
     * @return
     */
    public String[] getStrArr() {
        return new String[]{"aaa", "bbb", "ccc", "ddd"};
    }
}
